Verpacken einer Handling Unit

In diesem Beispiel soll gezeigt werden, wie eine vorhandene Handling Unit in eine neu zu erzeugende Handling Unit gepackt wird.

Die Handling Unit, die eingegeben wird, muss natürlich existieren. Hierbei wird die interne Identifikationsnummer verlangt (VEKP-VENUM).

ACHTUNG:
In den meisten Transaktionen, die Handling Units anzeigen (z. B. HUMO), wird aber nur die externe Identifikation angezeigt (VEKP-EXIDV)!!

 Coding

*&———————————————————————*
*& Verpacken einer vorhandenen Handling Unit in eine neue HU
*&———————————————————————*
REPORT  zsdhu_pack_hu_demo.

TYPE-POOLS vsep.

DATA:
  gs_hu              TYPE huitem_from,
  gt_venums          TYPE hum_venum_t,
  gv_venum           TYPE venum,
  gs_headers         TYPE vekpvb,
  gs_header_proposal LIKE huhdr_proposal,
  gs_item_proposal   TYPE huitm_proposal,
  gs_pack_req        TYPE vsep_s_pithu.

*** Eingabe der Handling Unit, die verpackt werden soll
PARAMETERS: p_venum TYPE venum DEFAULT ‘6658’.


START-OF-SELECTION.

*** Initialisierung Verpacken
  APPEND p_venum TO gt_venums.
  CALL FUNCTION ‘HU_INITIALIZE_PACKING’
    EXPORTING
      it_internal_numbers = gt_venums
    EXCEPTIONS
      not_possible        = 1
      OTHERS              = 2.

  CLEAR: gs_headers, gs_header_proposal.

*** Neue Handling Unit erzeugen: Vorbereitung
  gs_header_proposal-exidv          = ‘$1’.
  gs_header_proposal-hu_status_init = ‘A’.
*** HU soll aus diesem Packmittel sein: KARTON
  gs_header_proposal-vhilm          = ‘KARTON’.

*** HU erzeugen
  CALL FUNCTION ‘HU_CREATE_ONE_HU’
    EXPORTING
      if_create_hu       = ‘ ‘
      is_header_proposal = gs_header_proposal
    IMPORTING
      es_header          = gs_headers
    EXCEPTIONS
      input_missing      = 1
      not_possible       = 2
      header_error       = 3
      item_error         = 4
      serial_nr_error    = 5
      fatal_error        = 6
      OTHERS             = 7.
  IF sy-subrc <> 0.
*** Fehler beim Erzeugen der neuen HU
    WRITE: / ‘Fehler Create:’, sy-subrc.
    STOP.
  ELSE.
    WRITE: / ‘HU Created:’,
           / ‘- VENUM:’, gs_headers-venum,
           / ‘- EXIDV:’, gs_headers-exidv.
  ENDIF.


  LOOP AT gt_venums INTO gv_venum.
*** Vorhandene HU soll eingepackt werden…
    gs_hu-venum = gs_headers-venum.
*** … in die neu erzeugte HU:
    CLEAR gs_item_proposal.
    gs_item_proposal-velin        = ‘3’.
    gs_item_proposal-sub_hu_venum = gv_venum.

*** Neue Position als HU eintragen
    CALL FUNCTION ‘HU_CREATE_ITEM’
      EXPORTING
        is_handling_unit = gs_hu
        is_item_proposal = gs_item_proposal
      EXCEPTIONS
        not_possible     = 1
        OTHERS           = 2.
    IF sy-subrc > 0.
*** Fehlerprotokoll
      WRITE: / ‘Fehler HU_CREATE_ITEM’, sy-subrc.
    ELSE.
*** Protokoll
      WRITE: / ‘Create Item’, gv_venum, sy-subrc.
*** Verbuchen
      CALL FUNCTION ‘HU_POST’
        EXPORTING
          if_synchron = ‘X’
          if_commit   = ‘X’.
    ENDIF.

  ENDLOOP.

Enno Wulff